# -*- coding = utf-8 -*-
# @Time : 2023/2/17 16:26
# @Author : 龙王赘婿_彪少
# @File : file_io.py
# @Software: PyCharm

# 功能：文件读写
class Myfile:
    '''
    open(filename, mode)
    r 只读方式
    r+ 读写方式
    w 只写模式，若无文件自己会创建 指针在开头
    w+ 读写模式
    a 用于追加只写 指针在末尾
    a+ 用于追加读写

    b 二进制格式  与上面六个参数组合
    '''

    @staticmethod
    def myopen():
        f = open('../file/io_test.txt', 'w+')
        f.write("龙王赘婿\n")
        f.write("冷帝彪少\n")
        f.write("第一章：忘了爱\n")
        f.write("有了爱，便有了羁绊，有了羁绊，便有了弱点。我若要无敌于世间，便是要挥剑斩念，忘了爱！\n")
        f.close()

    @staticmethod
    def myread():
        f = open('../file/io_test.txt', 'r')
        # 一次性读取整个文件内容。推荐使用read(size)方法，size越大运行时间越长
        # 一般小文件我们都采用read()，不确定大小你就定个size，大文件就用readlines()
        str = f.read()
        print(str)

    @staticmethod
    def myreadline():
        f = open('../file/io_test.txt', 'r')
        # 每次读取一行内容。内存不够时使用，一般不太用
        str = f.readline()
        print(str)
        str = f.readline()
        print(str)

    @staticmethod
    def myreadlines():
        f = open('../file/io_test.txt', 'r')
        # 一次性读取整个文件内容，并按行返回到list，方便我们遍历
        str = f.readlines()
        for s in str:
            print(s)

    def myread2(self):
        # 经过测试，这个方法个人觉得最好
        f = open('../file/io_test.txt', 'r')
        # 直接用for读
        for line in f:
            print(line, end='')

    def mywrite(self):
        f = open('../file/io_test.txt', 'a+')
        value = ('手下部将', 5000)
        s = str(value)
        f.write(s)
        for line in f:
            print(line, end='')
        f.close()

    def myposition(self):
        # f.tell() 返回文件对象当前所处位置，从文件开头数起的字节数
        # f.seek() 改变指针当前位置
        # seek(x, 0) ：从起始位置即文件首行首字符开始移动x个字符
        # seek(x, 1) ：表示从当前位置往后移动x个字符
        # seek(-x, 2)：表示从文件的结尾往前移动x个字符
        f = open('../file/io_test.txt', 'r')
        print(f.tell())
        print(f.read(2))
        print(f.tell())
        f.seek(6)
        print(f.tell())
        print(f.read(2))

    def __init__(self):
        self.myopen()
        # self.myread()
        # self.myreadline()
        # self.myreadlines()
        # self.myread2()
        # self.mywrite()
        # self.myposition()

if __name__ == "__main__":
    t = Myfile()
